package test;


public class TTT {

    public static void main(String[] args) {
        TTT t = new TTT();
        System.out.println(t.tribonacci(4));
    }

    public int tribonacci(int n) {

        if(n == 0)
            return 0;
        else if(n == 1 || n == 2){
            return 1;
        }
        int sum1 = 0;
        int sum2 = 1;
        int sum3 = 1;
        int temp = 0;
        for (int i = 3; i <= n; i++) {
            temp = sum3;
            sum3 = sum1 + sum2 + sum3;
            sum1 = sum2;
            sum2 = temp;
        }
        return sum3;
    }

    public int tribonacci_time_out(int n) {
        if(n == 0){
            return 0;
        }
        else if(n == 1 || n == 2){
            return 1;
        }
        else
            return tribonacci(n -1) + tribonacci(n -2) + tribonacci(n -3);
    }
}
class Test1{
    public static void main(String[] args) {

    }

    /**
     * 给你一个整数数组 arr，请你检查是否存在两个整数 N 和 M，满足 N 是 M 的两倍（即，N = 2 * M）。
     *
     * 更正式地，检查是否存在两个下标 i 和 j 满足：
     *
     * i != j
     * 0 <= i, j < arr.length
     * arr[i] == 2 * arr[j]
     */
    public boolean checkIfExist(int[] arr) {
        return false;
    }
}